package com.zcxy360.sandtable.domain;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class CourseStageExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public CourseStageExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        public Criteria andStageIdIsNull() {
            addCriterion("course_stage.stage_id is null");
            return (Criteria) this;
        }

        public Criteria andStageIdIsNotNull() {
            addCriterion("course_stage.stage_id is not null");
            return (Criteria) this;
        }

        public Criteria andStageIdEqualTo(Integer value) {
            addCriterion("course_stage.stage_id =", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdNotEqualTo(Integer value) {
            addCriterion("course_stage.stage_id <>", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdGreaterThan(Integer value) {
            addCriterion("course_stage.stage_id >", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.stage_id >=", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdLessThan(Integer value) {
            addCriterion("course_stage.stage_id <", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.stage_id <=", value, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdIn(List<Integer> values) {
            addCriterion("course_stage.stage_id in", values, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdNotIn(List<Integer> values) {
            addCriterion("course_stage.stage_id not in", values, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.stage_id between", value1, value2, "stageId");
            return (Criteria) this;
        }

        public Criteria andStageIdNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.stage_id not between", value1, value2, "stageId");
            return (Criteria) this;
        }

        public Criteria andCourseIdIsNull() {
            addCriterion("course_stage.course_id is null");
            return (Criteria) this;
        }

        public Criteria andCourseIdIsNotNull() {
            addCriterion("course_stage.course_id is not null");
            return (Criteria) this;
        }

        public Criteria andCourseIdEqualTo(Integer value) {
            addCriterion("course_stage.course_id =", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotEqualTo(Integer value) {
            addCriterion("course_stage.course_id <>", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThan(Integer value) {
            addCriterion("course_stage.course_id >", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.course_id >=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThan(Integer value) {
            addCriterion("course_stage.course_id <", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.course_id <=", value, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdIn(List<Integer> values) {
            addCriterion("course_stage.course_id in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotIn(List<Integer> values) {
            addCriterion("course_stage.course_id not in", values, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.course_id between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andCourseIdNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.course_id not between", value1, value2, "courseId");
            return (Criteria) this;
        }

        public Criteria andTypeIsNull() {
            addCriterion("course_stage.type is null");
            return (Criteria) this;
        }

        public Criteria andTypeIsNotNull() {
            addCriterion("course_stage.type is not null");
            return (Criteria) this;
        }

        public Criteria andTypeEqualTo(Integer value) {
            addCriterion("course_stage.type =", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotEqualTo(Integer value) {
            addCriterion("course_stage.type <>", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeGreaterThan(Integer value) {
            addCriterion("course_stage.type >", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.type >=", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeLessThan(Integer value) {
            addCriterion("course_stage.type <", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.type <=", value, "type");
            return (Criteria) this;
        }

        public Criteria andTypeIn(List<Integer> values) {
            addCriterion("course_stage.type in", values, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotIn(List<Integer> values) {
            addCriterion("course_stage.type not in", values, "type");
            return (Criteria) this;
        }

        public Criteria andTypeBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.type between", value1, value2, "type");
            return (Criteria) this;
        }

        public Criteria andTypeNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.type not between", value1, value2, "type");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsIsNull() {
            addCriterion("course_stage.drawing_type_ids is null");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsIsNotNull() {
            addCriterion("course_stage.drawing_type_ids is not null");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsEqualTo(String value) {
            addCriterion("course_stage.drawing_type_ids =", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsNotEqualTo(String value) {
            addCriterion("course_stage.drawing_type_ids <>", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsGreaterThan(String value) {
            addCriterion("course_stage.drawing_type_ids >", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsGreaterThanOrEqualTo(String value) {
            addCriterion("course_stage.drawing_type_ids >=", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsLessThan(String value) {
            addCriterion("course_stage.drawing_type_ids <", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsLessThanOrEqualTo(String value) {
            addCriterion("course_stage.drawing_type_ids <=", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsLike(String value) {
            addCriterion("course_stage.drawing_type_ids like", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsNotLike(String value) {
            addCriterion("course_stage.drawing_type_ids not like", value, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsIn(List<String> values) {
            addCriterion("course_stage.drawing_type_ids in", values, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsNotIn(List<String> values) {
            addCriterion("course_stage.drawing_type_ids not in", values, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsBetween(String value1, String value2) {
            addCriterion("course_stage.drawing_type_ids between", value1, value2, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andDrawingTypeIdsNotBetween(String value1, String value2) {
            addCriterion("course_stage.drawing_type_ids not between", value1, value2, "drawingTypeIds");
            return (Criteria) this;
        }

        public Criteria andRoughTimeIsNull() {
            addCriterion("course_stage.rough_time is null");
            return (Criteria) this;
        }

        public Criteria andRoughTimeIsNotNull() {
            addCriterion("course_stage.rough_time is not null");
            return (Criteria) this;
        }

        public Criteria andRoughTimeEqualTo(Integer value) {
            addCriterion("course_stage.rough_time =", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeNotEqualTo(Integer value) {
            addCriterion("course_stage.rough_time <>", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeGreaterThan(Integer value) {
            addCriterion("course_stage.rough_time >", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.rough_time >=", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeLessThan(Integer value) {
            addCriterion("course_stage.rough_time <", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.rough_time <=", value, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeIn(List<Integer> values) {
            addCriterion("course_stage.rough_time in", values, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeNotIn(List<Integer> values) {
            addCriterion("course_stage.rough_time not in", values, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.rough_time between", value1, value2, "roughTime");
            return (Criteria) this;
        }

        public Criteria andRoughTimeNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.rough_time not between", value1, value2, "roughTime");
            return (Criteria) this;
        }

        public Criteria andIsOfflineIsNull() {
            addCriterion("course_stage.is_offline is null");
            return (Criteria) this;
        }

        public Criteria andIsOfflineIsNotNull() {
            addCriterion("course_stage.is_offline is not null");
            return (Criteria) this;
        }

        public Criteria andIsOfflineEqualTo(Boolean value) {
            addCriterion("course_stage.is_offline =", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineNotEqualTo(Boolean value) {
            addCriterion("course_stage.is_offline <>", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineGreaterThan(Boolean value) {
            addCriterion("course_stage.is_offline >", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineGreaterThanOrEqualTo(Boolean value) {
            addCriterion("course_stage.is_offline >=", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineLessThan(Boolean value) {
            addCriterion("course_stage.is_offline <", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineLessThanOrEqualTo(Boolean value) {
            addCriterion("course_stage.is_offline <=", value, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineIn(List<Boolean> values) {
            addCriterion("course_stage.is_offline in", values, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineNotIn(List<Boolean> values) {
            addCriterion("course_stage.is_offline not in", values, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineBetween(Boolean value1, Boolean value2) {
            addCriterion("course_stage.is_offline between", value1, value2, "isOffline");
            return (Criteria) this;
        }

        public Criteria andIsOfflineNotBetween(Boolean value1, Boolean value2) {
            addCriterion("course_stage.is_offline not between", value1, value2, "isOffline");
            return (Criteria) this;
        }

        public Criteria andLocationIsNull() {
            addCriterion("course_stage.location is null");
            return (Criteria) this;
        }

        public Criteria andLocationIsNotNull() {
            addCriterion("course_stage.location is not null");
            return (Criteria) this;
        }

        public Criteria andLocationEqualTo(String value) {
            addCriterion("course_stage.location =", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationNotEqualTo(String value) {
            addCriterion("course_stage.location <>", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationGreaterThan(String value) {
            addCriterion("course_stage.location >", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationGreaterThanOrEqualTo(String value) {
            addCriterion("course_stage.location >=", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationLessThan(String value) {
            addCriterion("course_stage.location <", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationLessThanOrEqualTo(String value) {
            addCriterion("course_stage.location <=", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationLike(String value) {
            addCriterion("course_stage.location like", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationNotLike(String value) {
            addCriterion("course_stage.location not like", value, "location");
            return (Criteria) this;
        }

        public Criteria andLocationIn(List<String> values) {
            addCriterion("course_stage.location in", values, "location");
            return (Criteria) this;
        }

        public Criteria andLocationNotIn(List<String> values) {
            addCriterion("course_stage.location not in", values, "location");
            return (Criteria) this;
        }

        public Criteria andLocationBetween(String value1, String value2) {
            addCriterion("course_stage.location between", value1, value2, "location");
            return (Criteria) this;
        }

        public Criteria andLocationNotBetween(String value1, String value2) {
            addCriterion("course_stage.location not between", value1, value2, "location");
            return (Criteria) this;
        }

        public Criteria andStartTimeIsNull() {
            addCriterion("course_stage.start_time is null");
            return (Criteria) this;
        }

        public Criteria andStartTimeIsNotNull() {
            addCriterion("course_stage.start_time is not null");
            return (Criteria) this;
        }

        public Criteria andStartTimeEqualTo(Date value) {
            addCriterion("course_stage.start_time =", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeNotEqualTo(Date value) {
            addCriterion("course_stage.start_time <>", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeGreaterThan(Date value) {
            addCriterion("course_stage.start_time >", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("course_stage.start_time >=", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeLessThan(Date value) {
            addCriterion("course_stage.start_time <", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeLessThanOrEqualTo(Date value) {
            addCriterion("course_stage.start_time <=", value, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeIn(List<Date> values) {
            addCriterion("course_stage.start_time in", values, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeNotIn(List<Date> values) {
            addCriterion("course_stage.start_time not in", values, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeBetween(Date value1, Date value2) {
            addCriterion("course_stage.start_time between", value1, value2, "startTime");
            return (Criteria) this;
        }

        public Criteria andStartTimeNotBetween(Date value1, Date value2) {
            addCriterion("course_stage.start_time not between", value1, value2, "startTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeIsNull() {
            addCriterion("course_stage.end_time is null");
            return (Criteria) this;
        }

        public Criteria andEndTimeIsNotNull() {
            addCriterion("course_stage.end_time is not null");
            return (Criteria) this;
        }

        public Criteria andEndTimeEqualTo(Date value) {
            addCriterion("course_stage.end_time =", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeNotEqualTo(Date value) {
            addCriterion("course_stage.end_time <>", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeGreaterThan(Date value) {
            addCriterion("course_stage.end_time >", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("course_stage.end_time >=", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeLessThan(Date value) {
            addCriterion("course_stage.end_time <", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeLessThanOrEqualTo(Date value) {
            addCriterion("course_stage.end_time <=", value, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeIn(List<Date> values) {
            addCriterion("course_stage.end_time in", values, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeNotIn(List<Date> values) {
            addCriterion("course_stage.end_time not in", values, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeBetween(Date value1, Date value2) {
            addCriterion("course_stage.end_time between", value1, value2, "endTime");
            return (Criteria) this;
        }

        public Criteria andEndTimeNotBetween(Date value1, Date value2) {
            addCriterion("course_stage.end_time not between", value1, value2, "endTime");
            return (Criteria) this;
        }

        public Criteria andIsOpenIsNull() {
            addCriterion("course_stage.is_open is null");
            return (Criteria) this;
        }

        public Criteria andIsOpenIsNotNull() {
            addCriterion("course_stage.is_open is not null");
            return (Criteria) this;
        }

        public Criteria andIsOpenEqualTo(Boolean value) {
            addCriterion("course_stage.is_open =", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenNotEqualTo(Boolean value) {
            addCriterion("course_stage.is_open <>", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenGreaterThan(Boolean value) {
            addCriterion("course_stage.is_open >", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenGreaterThanOrEqualTo(Boolean value) {
            addCriterion("course_stage.is_open >=", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenLessThan(Boolean value) {
            addCriterion("course_stage.is_open <", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenLessThanOrEqualTo(Boolean value) {
            addCriterion("course_stage.is_open <=", value, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenIn(List<Boolean> values) {
            addCriterion("course_stage.is_open in", values, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenNotIn(List<Boolean> values) {
            addCriterion("course_stage.is_open not in", values, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenBetween(Boolean value1, Boolean value2) {
            addCriterion("course_stage.is_open between", value1, value2, "isOpen");
            return (Criteria) this;
        }

        public Criteria andIsOpenNotBetween(Boolean value1, Boolean value2) {
            addCriterion("course_stage.is_open not between", value1, value2, "isOpen");
            return (Criteria) this;
        }

        public Criteria andCommitCountIsNull() {
            addCriterion("course_stage.commit_count is null");
            return (Criteria) this;
        }

        public Criteria andCommitCountIsNotNull() {
            addCriterion("course_stage.commit_count is not null");
            return (Criteria) this;
        }

        public Criteria andCommitCountEqualTo(Integer value) {
            addCriterion("course_stage.commit_count =", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountNotEqualTo(Integer value) {
            addCriterion("course_stage.commit_count <>", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountGreaterThan(Integer value) {
            addCriterion("course_stage.commit_count >", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.commit_count >=", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountLessThan(Integer value) {
            addCriterion("course_stage.commit_count <", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.commit_count <=", value, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountIn(List<Integer> values) {
            addCriterion("course_stage.commit_count in", values, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountNotIn(List<Integer> values) {
            addCriterion("course_stage.commit_count not in", values, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.commit_count between", value1, value2, "commitCount");
            return (Criteria) this;
        }

        public Criteria andCommitCountNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.commit_count not between", value1, value2, "commitCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountIsNull() {
            addCriterion("course_stage.publish_count is null");
            return (Criteria) this;
        }

        public Criteria andPublishCountIsNotNull() {
            addCriterion("course_stage.publish_count is not null");
            return (Criteria) this;
        }

        public Criteria andPublishCountEqualTo(Integer value) {
            addCriterion("course_stage.publish_count =", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountNotEqualTo(Integer value) {
            addCriterion("course_stage.publish_count <>", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountGreaterThan(Integer value) {
            addCriterion("course_stage.publish_count >", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountGreaterThanOrEqualTo(Integer value) {
            addCriterion("course_stage.publish_count >=", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountLessThan(Integer value) {
            addCriterion("course_stage.publish_count <", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountLessThanOrEqualTo(Integer value) {
            addCriterion("course_stage.publish_count <=", value, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountIn(List<Integer> values) {
            addCriterion("course_stage.publish_count in", values, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountNotIn(List<Integer> values) {
            addCriterion("course_stage.publish_count not in", values, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.publish_count between", value1, value2, "publishCount");
            return (Criteria) this;
        }

        public Criteria andPublishCountNotBetween(Integer value1, Integer value2) {
            addCriterion("course_stage.publish_count not between", value1, value2, "publishCount");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}